home *** CD-ROM | disk | FTP | other *** search
- package sun.util;
-
- import java.lang.ref.SoftReference;
- import java.util.Enumeration;
- import java.util.LinkedList;
- import java.util.Locale;
- import java.util.MissingResourceException;
- import java.util.concurrent.ConcurrentHashMap;
- import java.util.spi.TimeZoneNameProvider;
- import sun.util.resources.LocaleData;
- import sun.util.resources.OpenListResourceBundle;
-
- public final class TimeZoneNameUtility {
- private static ConcurrentHashMap<Locale, SoftReference<OpenListResourceBundle>> cachedBundles = new ConcurrentHashMap();
- private static ConcurrentHashMap<Locale, SoftReference<String[][]>> cachedZoneData = new ConcurrentHashMap();
-
- public static final String[][] getZoneStrings(Locale var0) {
- SoftReference var2 = (SoftReference)cachedZoneData.get(var0);
- String[][] var1;
- if (var2 == null || (var1 = (String[][])var2.get()) == null) {
- var1 = loadZoneStrings(var0);
- var2 = new SoftReference(var1);
- cachedZoneData.put(var0, var2);
- }
-
- return var1;
- }
-
- private static final String[][] loadZoneStrings(Locale var0) {
- LinkedList var1 = new LinkedList();
- OpenListResourceBundle var2 = getBundle(var0);
- Enumeration var3 = var2.getKeys();
- Object var4 = null;
-
- while(var3.hasMoreElements()) {
- String var5 = (String)var3.nextElement();
- String[] var6 = retrieveDisplayNames(var2, var5, var0);
- if (var6 != null) {
- var1.add(var6);
- }
- }
-
- String[][] var7 = new String[var1.size()][];
- return (String[][])var1.toArray(var7);
- }
-
- public static final String[] retrieveDisplayNames(String var0, Locale var1) {
- OpenListResourceBundle var2 = getBundle(var1);
- return retrieveDisplayNames(var2, var0, var1);
- }
-
- private static final String[] retrieveDisplayNames(OpenListResourceBundle var0, String var1, Locale var2) {
- LocaleServiceProviderPool var3 = LocaleServiceProviderPool.getPool(TimeZoneNameProvider.class);
- String[] var4 = null;
- if (var3.hasProviders()) {
- var4 = (String[])var3.getLocalizedObject(sun.util.TimeZoneNameUtility.TimeZoneNameGetter.access$000(), var2, var0, var1, new Object[0]);
- }
-
- if (var4 == null) {
- try {
- var4 = var0.getStringArray(var1);
- } catch (MissingResourceException var6) {
- }
- }
-
- return var4;
- }
-
- private static final OpenListResourceBundle getBundle(Locale var0) {
- SoftReference var2 = (SoftReference)cachedBundles.get(var0);
- OpenListResourceBundle var1;
- if (var2 == null || (var1 = (OpenListResourceBundle)var2.get()) == null) {
- var1 = LocaleData.getTimeZoneNames(var0);
- var2 = new SoftReference(var1);
- cachedBundles.put(var0, var2);
- }
-
- return var1;
- }
- }
-